package com.imcrl.core.config
{

	import flash.utils.ByteArray;
	import flash.utils.Dictionary;
	
	/**
	 *  RF 配置文件功能类
	 * 默认配置文件格式如下：
	 *	<config>
	 * 		<prefixes>
	 * 			<prefix name='res_prefix0' value='xxx/'/>
	 * 			<prefix name='res_prefix1' value='http://localhost/xxx/'/>
	 * 		</prefixes>
	 * 		<resources>
	 * 			<resource name='ui' prefix='res_prefix' value='assets/UILib.swf'/>
	 * 			<resource name='bui' value='assets/BasicUI.swf'/>
	 * 			<resource name='eui' value='assets/EntranceUI.swf'/>
	 * 		</resources>
	 * 		<services>
	 * 			<service name='getTicket' type='http' prefix='res_prefix' value='data/currentTicket.xml'/>
	 * 		</services>
	 * </config> 
	 * 
	 * @author eas
	 * 使用方法 载入xml，
	 * 用initConfigXML 输入xml。
	 * 用其他方法呼出内容。
	 * 
	 * 
	 */
	public class ConfigurationUtil
	{
		private static  var _config:Configuration=new Configuration();
		
		/**
		 * 注册自定义节点解析; 
		 * @param sectionName
		 * @param parserClass
		 * 
		 */	
		public static function registSectionParser(sectionName:String,parserClass:Class):void{
			_config.registSectionParser(sectionName,parserClass);
		}
		
		/**
		 * 倒入xml 
		 * @param xml
		 * 
		 */
		public static  function initConfigXML(xml:XML,version:String="1.0"):void
		{
			_config.initializeConfiguration(xml,version);	
		}
		
		
		public static function initByteArray(bytes:ByteArray):void{
			_config.initByteArray(bytes);
		}
		
		/**
		 *  根据资源名字获取资源绝对Url 
		 * @param resName
		 * @return 
		 * 
		 */		
		public static function getResource(resName:String):String
		{
			return _config.getItemURL(Configuration.RESOURCES,resName);
		}
		
		/**
		 * 获取服务的url 
		 * @param serviceName
		 * @return 
		 * 
		 */
		public static function getService(serviceName:String):String
		{
			return _config.getItemURL(Configuration.SERVICES,serviceName);
		}
		
		/**
		 * 根据name获取前缀 
		 * @param perfixName
		 * @return 
		 * 
		 */
		public static function getPrefix(perfixName:String):String
		{
			return _config.getItemURL(Configuration.PREFIXS,perfixName);
		}
		
		
		public static function getConfig(nodeName:String):Dictionary{
			return _config.getConfig(nodeName);
		}
		
		/**
		 * 修改某个 perfix 的 value 
		 * @param name  perfix 的名字，不能操作不存在的内容
		 * @param value  value
		 * 
		 */
		public static function setPrefixValue(name:String,value:String):void
		{
			_config.setPrefixValue(name,value);
		}
	}
}